package platform.util;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.ResourceBundle;

public class PropertiesReadUtil {
	ResourceBundle rb =  null;

	/**
	 * 
	 * @param proStr  如果你的文件名叫applicationResources.properties,那么proStr=applicationResources就可以了
	 */
	public PropertiesReadUtil(String proStr){
		rb=ResourceBundle.getBundle(proStr);

	}
	/**
	 * whr 2009-10-12
	 * 公用方法:用来读取properties配置文件中的信息
	 * @param obj 读取的对象
	 * @return 返回HashMap 键为序号,值为等号后面的内容
	 * 说明:配置文件中的格式必须如:
	 * 	#文件类别
	 *	DocInfo.type.size=2
	 * 	DocInfo.type.0=文件资料
	 * 	DocInfo.type.1=武器资料
	 * 则HashMap中的键为0和1,值为文件资料和武器资料
	 */
	public HashMap getValueFrom0(String obj)throws Exception{
		HashMap hm = new HashMap();
		String strSize = rb.getString(obj.trim()+".size");
		int intSize = Integer.parseInt(strSize.trim());
		for(int i=0;i<intSize;i++){
			String key = i+"";
			String value = rb.getString(obj.trim()+"."+i);
			hm.put(key.trim(), value.trim());
		}
		return hm;
	}
	
	/**
	 * 获取有序的键对值的集合
	 * @param obj	读取的对象
	 * @return
	 * @throws Exception
	 */
	public List getValueFrom0ToList(String obj)throws Exception{
		HashMap hm =null;
		List list=new ArrayList();
		String strSize = rb.getString(obj.trim()+".size");
		int intSize = Integer.parseInt(strSize.trim());
		for(int i=0;i<intSize;i++){
			hm = new HashMap();
			String key = rb.getString(obj+"."+i+".id");
			String value = rb.getString(obj+"."+i+".name");
			hm.put(key.trim(), value.trim());
			list.add(hm);
		}
		return list;
	}
	
	/**
	 * i从1开始
	 * @param obj
	 * @return
	 * @throws Exception
	 */
	public HashMap getValueFrom1(String obj)throws Exception{
		HashMap hm = new HashMap();
		String strSize = rb.getString(obj.trim()+".size");
		int intSize = Integer.parseInt(strSize.trim());
		for(int i=1;i<=intSize;i++){
			String key = i+"";
			String value = rb.getString(obj.trim()+"."+i);
			hm.put(key, value.trim());
		}
		return hm;
	}
	public HashMap getKeyByNameFrom1(String obj)throws Exception{
		HashMap hm = new HashMap();
		String strSize = rb.getString(obj.trim()+".size");
		int intSize = Integer.parseInt(strSize.trim());
		for(int i=1;i<=intSize;i++){
			String key = i+"";
			String value = rb.getString(obj.trim()+"."+i);
			hm.put(value, key);
		}
		return hm;
	}
	/**
	 * i从1开始
	 * @param obj
	 * @return
	 * @throws Exception
	 */
	public HashMap getKeyFrom1(String obj)throws Exception{
		HashMap hm = new HashMap();
		String strSize = rb.getString(obj.trim()+".size");
		int intSize = Integer.parseInt(strSize.trim());
		for(int i=1;i<=intSize;i++){
			String key = i+"";
			String value = rb.getString(obj.trim()+"."+i);
			hm.put( value.trim(),key);
		}
		return hm;
	}
	
	public HashMap getKeyByID_Name(String obj)throws Exception{
		HashMap hm = new HashMap();
		String strSize = rb.getString(obj+".size");
		int intSize = Integer.parseInt(strSize.trim());
		for(int i=0;i<intSize;i++){
			String key = rb.getString(obj+"."+i+".id");
			String value = rb.getString(obj+"."+i+".name");
			hm.put( value.trim(),key.trim());
		}
		return hm;
	}
	
	public int[] getValueToInt(String obj)throws Exception{
		
		String strSize = rb.getString(obj.trim()+".size");
		int intSize = Integer.parseInt(strSize.trim());	
		int[] rec=new int[intSize];

		for(int i=0;i<intSize;i++){
			
			rec[i] = Util.toint(rb.getString(obj.trim()+"."+i));
		
		}
		return rec;
	}
	
	
	public HashMap getValueByID_Name(String obj)throws Exception{
		HashMap hm = new HashMap();
		String strSize = rb.getString(obj+".size");
		int intSize = Integer.parseInt(strSize.trim());
		for(int i=0;i<intSize;i++){
			String key = rb.getString(obj+"."+i+".id");
			String value = rb.getString(obj+"."+i+".name");
			hm.put(key.trim(), value.trim());
		}
		return hm;
	}
	/**
	 * 功能：根据 key取value   
	 * @param key  如：key=DocInfo.type.0  
	 * @return  value 如：文件资料
	 */
	public String getByKey(String key){
		return rb.getString(key).trim();
	}

	/**
	 * 获取所有的Key值
	 * @return
	 */
	public Enumeration getAllKeys(){
		return rb.getKeys();
	}
	/**
	 * 郭婷婷 2010-01-28
	 * 以List升序返回配置文件信息
	 * PropertiesItem.id:配置文件中的id值
	 * PropertiesItem.name:配置文件中的name值
	 * 按照id升序
	 * @param obj:读取的对象
	 * @return
	 */
	public List<PropertiesItem> getListAsc(String obj){
		List<PropertiesItem> listPropertiesItem=new ArrayList<PropertiesItem>();
		String strSize = rb.getString(obj.trim()+".size");
		int intSize = Integer.parseInt(strSize.trim());
		for(int i=0;i<intSize;i++){
			PropertiesItem propertiesItem = new PropertiesItem();
			
			String key = rb.getString(obj+"."+i+".id");
			String value = rb.getString(obj+"."+i+".name");
			propertiesItem.setId(key);
			propertiesItem.setName(value);
			listPropertiesItem.add(propertiesItem);
		}
		return listPropertiesItem;
	}
	/**
	 * 郭婷婷 2010-01-28
	 * 以List降序返回配置文件信息
	 * PropertiesItem.id:配置文件中的id值
	 * PropertiesItem.name:配置文件中的name值
	 * 按照id降序
	 * @param obj:读取的对象
	 * @return
	 */
	public List<PropertiesItem> getListDesc(String obj){
		List<PropertiesItem> listPropertiesItem=new ArrayList<PropertiesItem>();
		String strSize = rb.getString(obj.trim()+".size");
		int intSize = Integer.parseInt(strSize.trim());
		for(int i=intSize-1;i>=0;i--){
			PropertiesItem propertiesItem = new PropertiesItem();
			
			String key = rb.getString(obj+"."+i+".id");
			String value = rb.getString(obj+"."+i+".name");
			propertiesItem.setId(key);
			propertiesItem.setName(value);
			listPropertiesItem.add(propertiesItem);
		}
		return listPropertiesItem;
	}
}